import { xhlGet } from '../../utils/request'
Page({
  data: {
    goodsList: [],
    currentIndex: 0
  },

  // 只是为了在逻辑内使用
  priceOrder: true,
  commentOrder: true,
  idOrder: true,

  // 请求商品信息的函数
  getGoodsList(id) {
    // 根据 id 去请求数据
    // console.log(id)
    // 注意: 我们拿到的事分类 id
    xhlGet('/goods?categoryId=' + id)
    .then(res => {
      console.log(res)
      this.setData({ goodsList: res })
    })
  },

  // 根据价格排序的函数
  sortByPriceHandler() {
    // 原理: 就是把 this.data.goodsList 数组内的内容, 根据价格的 大小 进行排序
    // 借助一个 js 的方法, sort()
    // 语法: 数组.sort((a, b) => { return a - b })
    // 语法: 数组.sort((a, b) => { return b - a })

    // 问题: 排序有升序和降序
    //   第一次点击如果是升序, 第二次点击就要变成降序, 第三次点击还要是升序
    //   准备一个变量, 表示升序还是降序
    // 注意: 在 Page 内定义状态变量, 书写在 data 内
    //       写在 data 内的内容主要是为了在 wxml 内使用和逻辑中使用
    //      现在, 我们准备的这个变量, 只需要使用在逻辑内, 不需要使用 wxml 内
    //      可以不写在 data 内, 直接和 data 同级书写即可

    // 操作 PriceOrder 变量取反
    // 如果使用 data 内的数据, 需要书写 this.data.xxx
    // 如果你直接使用 page 内的数据, 需要书写 this.xxx
    this.priceOrder = !this.priceOrder

    this.setData({ currentIndex: 1 })

    // 实现排序
    this.setData({
      goodsList: this.data.goodsList.sort((a, b) => {
        return this.priceOrder ? a.price - b.price : b.price - a.price
      })
    })
  },

  // 根据好评排序的函数
  sortByCommentHandler() {
    this.commentOrder = !this.commentOrder

    this.setData({ currentIndex: 2 })

    // 实现排序
    // 注意: goodscomment 是一个字符串 '96%'
    //      不能直接减法
    //      需要把 '96%' 变成 96
    //     使用一个 parseInt() 方法
    this.setData({
      goodsList: this.data.goodsList.sort((a, b) => {
        return this.commentOrder ? parseInt(a.goodcomment) - parseInt(b.goodcomment) : parseInt(b.goodcomment) - parseInt(a.goodcomment)
      })
    })
  },

  // 根据 id 排序的函数
  sortByIdHandler() {
    this.idOrder = !this.idOrder

    this.setData({ currentIndex: 0 })

    // 实现排序
    this.setData({
      goodsList: this.data.goodsList.sort((a, b) => {
        return this.idOrder ? a.id - b.id : b.id - a.id
      })
    })
  },

  onLoad(options) {
    // 动态设置标题内容
    wx.setNavigationBarTitle({ title: options.title })
    // 请求数据
    this.getGoodsList(options.id)
  }
})